package cn.xmoit.other;

/**
 * @author fangyy
 */
public class LinkedQueue {

	/**
	 * 定义一个节点类
	 */
	private static class Node {

		String value;

		Node next;

	}

	/**
	 * 记录队列元素个数
	 */
	private int size = 0;

	/**
	 * head指向队头结点
	 */
	private Node head;

	/**
	 * tail指向队尾节点
	 */
	private Node tail;

	/**
	 * 申请一个队列
	 */
	public LinkedQueue() {
	}

	/**
	 * 入队操作，将数据放入队尾
	 * @param item 数据
	 * @return true or false
	 */
	public boolean enqueue(String item) {
		Node newNode = new Node();
		newNode.value = item;
		if (size == 0) {
			head = newNode;
		}
		else {
			tail.next = newNode;
		}
		tail = newNode;
		size++;
		return true;
	}

	/**
	 * 出队操作
	 * @return 元素内容
	 */
	public String dequeue() {
		if (size == 0) {
			return null;
		}
		if (size == 1) {
			tail = null;
		}
		String res = head.value;
		head = head.next;
		size--;
		return res;
	}

}
